package com.yeyks.consumer.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yeyks.consumer.dal.domain.UserAccountOverview;
import com.yeyks.consumer.dal.domain.UserInfo;
import com.yeyks.consumer.dto.UserAccountOverviewDTO;
import com.yeyks.consumer.param.UserAccountOverview.*;
import com.yeyks.consumer.vo.UserAccountOverviewInfoVo;
import com.yeyks.consumer.vo.UserAccountOverviewInviteDetailVo;
import com.yeyks.consumer.vo.UserAccountOverviewInvitedUserListVo;
import com.yeyks.consumer.vo.UserAccountOverviewWithdrawalInquiryVo;

import java.util.List;


/**
 * <p>
 * 用户账户总览表 服务类
 * </p>
 *
 * @author yun
 * @since 2019-06-25
 */
public interface UserAccountOverviewService extends IService<UserAccountOverview> {

    /**
     * 通过用户的id查询用户账户信息(没有则创建)
     *
     * @param userId
     * @return
     */
    UserAccountOverview getUserAccountNoCreate(Integer userId, Integer type);

    /**
     * 增加用户金额
     *
     * @param amount
     * @param userId
     * @param type
     * @param remark     账单类型：1 充值 2 佣金 3、提现 4、消费，5 0元推广分红
     * @param amountType 佣金类型
     * @return
     */
    Boolean addAmount(Integer amount, Integer userId, Integer type, String remark, Integer amountType);

    /**
     * 减少账户金额
     *
     * @param amount 操作金额数
     * @param userId 用户id
     * @param remark 备注
     * @param type   账单类型：1 充值 2 佣金 3、提现 4、消费
     * @return
     */
    Boolean descAmount(Integer amount, Integer userId, Integer type, String remark, Integer amountType);

    //用户推广信息
    UserAccountOverviewInfoVo info(UserAccountOverviewInfoParam param);

    //用户佣金信息
    UserAccountOverviewWithdrawalInquiryVo invitedAmount(UserAccountOverviewinvitedAmountParam param);

    //推荐用户信息列表
    List<UserAccountOverviewInvitedUserListVo> invitedUserList(UserAccountOverviewInvitedUserListParam param);

    //按类型获取推广信息
    UserAccountOverviewInviteDetailVo invitedDetail(UserAccountOverviewInviteDetailParam param);

    //推手排行
    UserAccountOverviewMakerLeaderboardListVo makerLeaderboardList(String monthStr);

    //推手排行
    UserAccountOverviewMakerLeaderboardListVo makerLeaderboardList();

    /**
     * 获取用户账户等相关信息
     *
     * @param userInfo
     * @return
     */
//    UserAccountOverviewDTO info(UserInfo userInfo);


}
